from configparser import ConfigParser
from os import path
from modules.utils import get_file_encoding, print_err


class BaseTranslation(object):
    '''
    翻译API的基础类
    '''

    def __init__(self, section: str):
        # 配置文件中api的节点名称
        self.section = section
        # api请求频率。次/每秒
        self._rate = 1
        # 单次请求最大字符数
        self._max_char = 2000

        self._conf = self.__get_keys()

    def translate(self) -> str:

        print_err('当前翻译API的translate函数出现错误！')
        exit(0)

    def get_rate(self) -> int:
        '''
        获取请求频率
        '''
        return self._rate

    def get_from_langs(self) -> dict:
        '''
        获取源语种字典
        '''
        return {}

    def get_to_langs(self) -> dict:
        '''
        获取目标语种字典
        '''
        return {}

    def __get_keys(self) -> dict:
        '''
        获取配置
        '''

        config_path = path.join(path.abspath('.'), 'modules', 'api', 'api_keys.ini')
        if not path.isfile(config_path):
            return {}

        conf = ConfigParser()  # 调用读取配置模块中的类
        conf.optionxform = lambda option: option
        conf.read(config_path, encoding=get_file_encoding(config_path))
        try:
            _conf = conf.items(self.section)
            return dict(_conf)
        except:
            return {}
